package com.zwy.ubts.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;

/**
 * @Author Zhou Wenying
 * @Description:用来实现sqlSessionFactory工厂以及sqlSession 对象的创建
 *
 * @Date Created in 13:24 2023/1/5
 */

//public class Singleton {
//    private static Singleton instance = new Singleton();
//
//    private Singleton() {}
//
//    public static Singleton getInstance() {
//        return instance;
//    }
//}

public class MybatisUtils {
    public static SqlSessionFactory sqlSessionFactory;
    public static SqlSession sqlSession = null;
    static {
        try {
            // 使用 mybatis 核心配置文件来创建 sqlSessionFactory 工厂
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 返回 sqlSession 的方法，根据该结果就可以去创建需要的代理对象
    public static synchronized SqlSession getSqlSession() {
        if (sqlSession == null){
            sqlSession = sqlSessionFactory.openSession();
        }
        return sqlSession;
    }

    //屏蔽原因 多次获取导致sqlSession不一样，所以再提交的时候出现不对应情况 看baseService解决方式
    //// sqlSession 事物提交
    //public static void commit() {
    //    sqlSession.commit();
    //}
    //public static void close() {
    //    sqlSession.close();
    //}
}